基于 NUCLEON 板载 STLINK 构建开发工具链

您所在的位置:网站首页 stlink utility无法连接板子 基于 NUCLEON 板载 STLINK 构建开发工具链

基于 NUCLEON 板载 STLINK 构建开发工具链

2024-07-09 21:00| 来源: 网络整理| 查看: 265

STLINK开发工具链

STM32 Nucleo BoardsSTM32 Nucleo 64 boarder MB1136 User ManualMB1136 Schematic

 

01 STLINK开发工具 一、前言

  这是从 NUCLEO 开发板上拆卸下来的 ST LINK模块。  下面给出构建 STM32单片机开发软硬件的具体过程。

GM1707717205_1920_1080.MPG|_-2

二、定义接口

  下面给出 ST LINK 模块的硬件配置。  首先, 将CN2接口上的两个跳线都去掉。 它就正式配置成 ST LINK。   它对外的 SWD 接口定义, 如下面表格给出。  将其中 GND, CLK, DIO 以及 NRST引出。  此外, ST LINK 还有一个虚拟串口, 通过它可以接收单片机发送的信息。    这是定义的六芯调试接口的功能。  根据前面介绍的端口定义, 这里给出了调试接口引线的连接关系。  利用这个硬件接口, 便可以与调试开发板进行连接了。

GM1707717986_1920_1080.MPG|_-11

  使用六芯扁平电缆制作外部调试端口引线。  分成两个接头。  一个是四芯接口, 一个是两芯接口, 这里给出两个接口的焊接关系,  分别连接到 ST LINK 中的 SWD接口 和串口。

GM1707718333_1920_1080.MPG|_-5

  将引线制作完毕之后, 安插在模块接口排针上,  使用热缩管进行固定, 用于后面开发板的调试。

GM1707720699_1920_1080.MPG|_-2

三、软件开发

  使用 STLINK下载软件, 可以有以下三种方式, 第一种方式使用 STM32 Cube Programmer。  这个软件可以通过 STLINK, 串口以及USB对单片机软件进行更新。  同时, 它可以对单片机内部的一些寄存器进行配置。 功能非常强大。  第二个软件为 ST Link Utility。 它的界面非常简介。  而且下载流程不需要额外更多的操作。

GM1707721126_1920_1080.MPG|_-5   第三种方法, 就是在 EWIAR 开发环境中, 直接配置调试器为 ST LINK, 应用 SWD接口进行调试。  在程序编译之后, 便可以进行下载调试。

GM1707721244_1920_1080.MPG|_-2

  在工程文件配置的时候, 需要正确的选择连接控制文件。 如果没有选择正确的连接控制文件, 就会使得生成的 HEX 文件对应的存储空间与 STM32 单片机不匹配, 造成后面无法进行下载和调试。  另外, 设置处理器件的时候, 需要选择正确的型号。 这样便于后面进行调试。  在使用 Cube MX 软件自动生成工程文件的过程中是, 选择 EWIAR 的版本为 8.0 .

GM1707721549_1920_1080.MPG|_-3

 

※ 总  结 ※

  本文描述了基于 STLINK 构建STM32单片机开发的工具链过程. 基于这个方式,  可以非常方便进行单片机的软硬件开发. GM1707721666_1920_1080.MPG|_-2

#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # JFLASHLITE.PY -- by Dr. ZhuoQing 2024-02-07 # # Note: #============================================================ from headm import * import pyautogui import socket #------------------------------------------------------------ UDP_HOST = '127.0.0.1' UDP_PORT = 2244 UDP_BUFSIZE = 0x1000 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, UDP_BUFSIZE) s.settimeout(0.2) def ssend(data): ADDR = (UDP_HOST, UDP_PORT) if type(data) != str: data = str(data) data = bytes(data, 'gbk') s.sendto(data, ADDR) def srecv(): try: data, ADDR = s.recvfrom(UDP_BUFSIZE) except socket.timeout: printf('Meter time out.') data = '' if len(data) > 0: return data.decode('utf-8') else: return '' def sval(): ssend('MEMOS') splitstr = srecv().split(' ') data = [] for val in splitstr: if len(val) > 0: data.append(eval(val)) return data #------------------------------------------------------------ rect = tspgetwindowrect("STM32 ST-LINK Utility") if sum(rect) != 0: pyautogui.click((rect[0]+rect[2])//2, rect[3]-100) tspsendwindowkey("STM32 ST-LINK Utility", "o", control=1, noreturn=1) time.sleep(.5) tspsendwindowkey("打开", "n", alt=1,noreturn=1) tspsendwindowkey("打开", "v", control=1,noreturn=1) tspsendwindowkey("打开", "o", alt=1,noreturn=1) time.sleep(1) tspsendwindowkey("STM32 ST-LINK Utility", "p", control=1, noreturn=1) time.sleep(.5) rect = tspgetwindowrect("Download") if sum(rect) == 0: exit() pyautogui.click((rect[0]+rect[2])//2 - 35, rect[3]-30) ssend('CLEAR') rect = tspgetwindowrect("STM32 BOOTLOADER") if sum(rect) != 0: pyautogui.click((rect[0]+rect[2])//2, rect[1]+5) tspfocuswindow("TEASOFT:3") printf("\a") exit() #------------------------------------------------------------ rect = tspgetwindowrect("STM32CubeProgrammer") if sum(rect) != 0: pyautogui.click(rect[0]+450, rect[1]+375) ssend('CLEAR') for i in range(50): time.sleep(.5) rect = tspgetwindowrect("消息") if sum(rect) != 0: tspsendwindowkey("STM32CubeProgrammer", "\r") for i in range(5): time.sleep(.5) rect = tspgetwindowrect("消息") if sum(rect) != 0: tspsendwindowkey("STM32CubeProgrammer", "\r") for i in range(5): time.sleep(.5) rect = tspgetwindowrect("错误") if sum(rect) != 0: tspsendwindowkey("STM32CubeProgrammer", "\r") tspfocuswindow("STM32 BOOTLOADER") tspfocuswindow("TEASOFT:3") printf("\a") exit() #------------------------------------------------------------ rect = tspgetwindowrect("SEGGER J-Flash") clipboard.copy("") printf("") #------------------------------------------------------------ if len(sys.argv) > 1: if sys.argv[1] == '*': crect = tspgetwindowrect("STM32CubeMX") if sum(crect) != 0: pyautogui.click(crect[2] - 250, crect[1] + 95) for i in range(20): time.sleep(.5) crect = tspgetwindowrect('Code Generation') if sum(crect) != 0: pyautogui.click(crect[2] - 100, crect[3] - 40) break crect = tspgetwindowrect('IAR Embedded Workbench') if sum(crect) != 0: pyautogui.click((crect[0]+crect[2])//2, crect[3]-95) for i in range(20): time.sleep(.5) crect = tspgetwindowrect('IarIdePm') if sum(crect) != 0: pyautogui.click((crect[0]+crect[2])//2, crect[3] - 40) break printf("Wait busy.\a") for i in range(50): time.sleep(.1) crect = tspgetwindowrect('Busy') if sum(crect) != 0: break printf("Wait finished.\a") for i in range(50): time.sleep(.1) crect = tspgetwindowrect('Busy') if sum(crect) == 0: break printf("Rebuild all.\a") tspsendwindowkey("IAR Embedded Workbench", "pm", alt=1, noreturn=1) tspfocuswindow("TEASOFT:3") printf('\a') exit() #------------------------------------------------------------ pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2-35) time.sleep(.5) flag = 0 for i in range(6): ssend("COPY") time.sleep(.2) ss = clipboard.paste() if len(ss) > 5: flag = 1 printf(ss) break if flag == 0: # pyautogui.click(rect[2]-35, (rect[1]+rect[3])//2-80) # time.sleep(1.25) # pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2-35) # time.sleep(1.25) pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2-35) for i in range(10): ssend("COPY") time.sleep(.2) ss = clipboard.paste() if len(ss) > 5: printf(ss) break #------------------------------------------------------------ #rect = tspgetwindowrect("STM32 BOOTLOADER") #pyautogui.click((rect[0]+rect[2])//2, (rect[1]+rect[3])//2-35) tspfocuswindow("TEASOFT:3") printf("\a") #------------------------------------------------------------ # END OF FILE : JFLASHLITE.PY #============================================================

■ 相关文献链接:

STM32 Nucleo Boards STM32 Nucleo 64 boarder MB1136 User Manual MB1136 Schematic


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3